import router from '@/router'
import axios from 'axios'
import store from '../store'

// baseURL 超时时间配置
// 创建新的axios实例  axios.create
const request = axios.create({
  //  baseURL  后台基础地址
  baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net'
})

// 给request添加拦截器
// 请求拦截器=》 发请求之前执行
request.interceptors.request.use(config => {
  // 使用场景 全局注入token
  const { token } = store.stete.user.profile
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, e => Promise.reject(e))

// 处理返回数据 token失效跳回到登录页
// 响应拦截器=》 发请求之后
request.interceptors.response.use(
  (response) => {
    // 请求成功：2xx 走这里
    return response
  },
  (error) => {
    // 请求失败：2xx以外走这里
    // 使用场景：401=》处理返回数据 token失败跳回到登录页
    if (error.response.status === 401) {
    //    1.获取当前访问页面的地址
    // 2.跳回登录页并携带当前访问页面的地址=》登录成功之后，可以回调到上次401访问的页面
      const backPath = router.currentRoute.value.path
      router.replace(`/login?backPath=${backPath}`)
    }
    return Promise.reject(error)
  }
)
/**
 * 二次封装
 */

// 导出requests实例
export default request
